#if !defined(ximera_math_color_hpp)
#define ximera_math_color_hpp

// -----------------------------------------------------------

#include <ximera/types.hpp>

namespace ximera { namespace math
{
    class XIMERA_API Color
    {
    public:
        Real r, g, b, a;

    public:
        Color();
        explicit Color(UInt32 rgba);
        Color(Real r, Real g, Real b, Real a = 1);

        Color& saturate();
        Color asSaturated() const;

        Real& operator[](int i);
        Real const& operator[](int i) const;

        Color& operator+=(Color const& rhs);
        Color& operator-=(Color const& rhs);
        Color& operator*=(Real rhs);
        Color& operator/=(Real rhs);

        static Color const RED;
        static Color const GREEN;
        static Color const BLUE;
        static Color const BLACK;
        static Color const WHITE;
    };
}}

#include <ximera/math/inline/color.inl>

// -----------------------------------------------------------

#endif